package leetcode.problems;

import org.junit.Test;

import java.util.Arrays;

/**
 * Created by gmwang on 2018/7/25
 * 峰阵指数
 */
public class _0805SmallestRangeI {
    /**
     *
     * Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and add x to A[i].
     给定整数的数组A，对于每个整数a[i]，我们可以选择任何带有-k<＝x<＝k的x，并将x加到[i]。
     After this process, we have some array B.
     在这个过程之后，我们有一些数组B。
     Return the smallest possible difference between the maximum value of B and the minimum value of B.
     返回B的最大值与B的最小值之间的最小可能差值。
     *
     *
     Example 1:

     Input: A = [1], K = 0
     Output: 0
     Explanation: B = [1]
     Example 2:

     Input: A = [0,10], K = 2
     Output: 6
     Explanation: B = [2,8]
     Example 3:

     Input: A = [1,3,6], K = 3
     Output: 0
     Explanation: B = [3,3,3] or B = [4,4,4]

     Note:

     1 <= A.length <= 10000
     0 <= A[i] <= 10000
     0 <= K <= 10000
    /**
     *
     * @param A,k
     * @return
     */
    public int smallestRangeI(int[] A, int k) {
        Arrays.sort(A);
        int res = (A[A.length -1 ]-k) - (A[0] + k);
        return res < 0?0:res;
    }
    @Test
    public void test() {
//        int[] ints = {1};
//        int k = 0;
//        int[] ints = {0,10};
//        int k = 2;
        int[] ints = {1,3,6};
        int k = 3;
        int res = smallestRangeI(ints,k);
        System.out.println(res);
    }
}
